1
Introducción a los Agentes de Resolución de Problemas
PolyU COMP5511Lecture 2
00:00

Del Reflejo a la Planificación

En la evolución del diseño de agentes, pasamos de Agentes Reflejos, que asignan percepciones directamente a acciones basándose en reglas simples (p. ej., «Si el coche de delante frena, inicia el frenado»), a Agentes de Resolución de Problemas. Los agentes reflejos operan sobre el contexto inmediato, mientras que los agentes de resolución de problemas son Basados en Objetivos. Consideran las consecuencias futuras de sus acciones para encontrar una secuencia que satisfaga un objetivo específico.

  • Agente Reflejo: $Action = Function(Percept)$
  • Agente de Planificación: $Action\_Sequence = Search(State, Goal)$

La Representación Atómica del Estado

En este nivel fundamental, los agentes utilizan una Representación Atómica. Esto significa que el estado del mundo se trata como una caja negra: un nodo singular sin estructura interna visible para el algoritmo de búsqueda. El agente razona únicamente sobre:

  • Estados ($S$): Instantáneas del entorno.
  • Acciones ($A$): Transiciones entre estados.
  • Prueba de Objetivo: Una comprobación booleana de si el estado $s \in S_{goal}$.

El Bucle de Resolución de Problemas

Un agente de resolución de problemas sigue un ciclo distinto de cuatro pasos para navegar por el entorno:

  1. Formulación del Objetivo: Decidir qué objetivo perseguir en función de la situación actual.
  2. Formulación del Problema: Abstraer el mundo real en un modelo matemático (Estados y Acciones).
  3. Búsqueda: Simular secuencias de acciones para encontrar el camino óptimo.
  4. Ejecución: Realizar las acciones encontradas durante la fase de búsqueda sin deliberación adicional (asumiendo un entorno estático).
Implementación en Python (agent_types.py)
1
class ReflexAgent:
2
defact(self, percept):
3
# Direct mapping: Rule -> Action
4
return rules.get(percept, default_action)
5
6
class ProblemSolvingAgent:
7
def__init__(self):
8
self.seq = [] # Buffered action sequence
9
10
defact(self, percept):
11
# If we are mid-execution, continue
12
ifself.seq:
13
returnself.seq.pop(0)
14
15
# Otherwise, Plan (Search)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# Search returns a list of actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop(0)